#include "Headers/Head.h"
#include "wektor.cpp"
wymiary wym(800,600);//rozmiar okna

int main()
{

    Ship lol("statek");
    lol.dodaj_comp(pozycja(25,25), 0);
    lol.laduje_teksture("Ship");
    RenderWindow okno( sf::VideoMode( wym.dlug, wym.szer, 32 ), "Sighonophora" );
    okno.SetFramerateLimit(FPS);
    Object Ship1("shap",77,100);
    Object Ship2("shap",150,100);
    Object Ship3("shap",200,260);
    Object Ship4("shap",130,260);
    Object Ship5("shap",77,210);
    Ship1.laduje_teksture("Shape1");
    Ship2.laduje_teksture("Shape1");
    Ship3.laduje_teksture("Shape1");
    Ship4.laduje_teksture("Shape1");
    Ship5.laduje_teksture("Shape1");
    while(okno.IsOpened())
    {
        sf::Event zdarzenie;
        while(okno.GetEvent(zdarzenie))
        {
            if(zdarzenie.Type == Event::Closed)
                okno.Close();
            if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape )
                okno.Close();
        }
        //Ship1.ruch(okno);
        Ship2.rysuj(okno);
        Ship3.rysuj(okno);
        Ship4.rysuj(okno);
        Ship5.rysuj(okno);
        Ship1.rysuj(okno);

        lol.ruch(okno);
        lol.rysuj(okno);
        okno.Display();
        okno.Clear(sf::Color( 255, 255, 255 ));

    }



    // NetTest();

}

void NetTest()
{
    time_t start, koniec;
    HostUDP Host(64567, 64568);
    ClientUDP Client(64567, 64568);
    SiecUDP *Net;
    cout<<sf::IPAddress::GetLocalAddress()<<endl;
    bool wybor;
    cout<<"Host czy Client[1/0]"<<endl;
    cin>>wybor;
    if(wybor)
        Net = &Host;
    else
        Net = &Client;
    Net->polacz();

    start = clock();
    cout<<"ACK Test:"<<endl<<endl;
    static int wielkosc = 500;
    if(wybor)//czyHost
    {
        int licznik = 0;
        bool zapamietaj[wielkosc];
        for(int i = 1; i<= wielkosc; i++)
        {
            zapamietaj[i]=0;
            sf::Sleep(0.011);
            koniec = clock();
            Host.wyslij(i);
            if(Host.pobierz())
            {
                Host.odb>>zapamietaj[i];
            }
            if(zapamietaj[i])
            {
                cout<<"Host zapamietal ACK: "<<i<<" : "<<zapamietaj[i]<<endl;
                licznik++;
            }
            else
                cout<<"\tBlad ACK"<<i<<" : "<<zapamietaj[i]<<endl;
        }
        cout<<"\tZatwierdzone "<<licznik<<"/"<<wielkosc<<endl;

    }
    else
    {
        int licznik = 0;
        bool  ACK = 1;
        int zapamietaj[wielkosc];
        for(int i = 1; i<= wielkosc; i++)
        {
            sf::Sleep(0.011);
            koniec = clock();
            if(Client.pobierz())
            {
                licznik++;
                Client.odb>>zapamietaj[i];
                cout<<"CLIENT pobral "<<zapamietaj[i]<<endl;
                Client.wyslij(ACK);
            }

        }
        cout<<"\tZatwierdzone "<<licznik<<"/"<<wielkosc<<endl;
    }
    cout<<"Czas: "<<koniec-start<<"ms"<<endl;

    cin>>wybor;
}

